/**
 * @file start_task.c
 * @author YangSL (dalin@main.com)
 * @brief 任务列表文件
 * @version 0.0.1
 * @date 2022-09-23
 * 
 * @copyright Copyright (c) 2022
 * 
 */
// 自定义的任务
#include "start_task.h"
#include "emcy_task.h"
#include "uart_task.h"
#include "cmd_can_rx_task.h"
#include "cmd_can_tx_task.h"
#include "can_interface.h"


task_t task_list[TASK_ID_MAX] = {0};
/**
 * @brief 开始任务函数，创建自定义任务，完成后销毁开始任务
 * 
 * @param pvParameters 
 */
void start_task(void *pvParameters)
{

    taskENTER_CRITICAL();           //进入临界区

    can_open(0, 500);

    /* 创建串口通信任务 */
   task_list[TASK_ID_USART_COMM] =   
//    kernel_task_create( (TaskFunction_t )uart_com_task,
//                        (const char*    )"uart_com_task",
//                        (UBaseType_t    )UART_COM_TASK_PRIO,
//                        (uint16_t       )TASK_STACK_2048B,
//                        (void*          )NULL); 
 
    /* 创建与主控通信CAN通信接收任务 */
    task_list[TASK_ID_CAN_RX_COMM] = 
    kernel_task_create( (TaskFunction_t )cmdCanRx_task,
                        (const char*    )"cmd_can_rx_task",
                        (UBaseType_t    )CMD_CAN_RX_TASK_PRIO,
                        (uint16_t       )TASK_STACK_4096B,
                        (void*          )NULL); 

    /* 创建与主控通信CAN通信发送任务 */
    task_list[TASK_ID_CAN_TX_COMM] =  
    kernel_task_create( (TaskFunction_t )cmdCanTx_task,
                        (const char*    )"cmd_can_tx_task",
                        (UBaseType_t    )CMD_CAN_TX_TASK_PRIO,
                        (uint16_t       )TASK_STACK_4096B,
                        (void*          )NULL); 

    /* 创建紧急任务 */
   task_list[TASK_ID_EMCY] =   
   kernel_task_create( (TaskFunction_t )emcy_task,
                       (const char*    )"emcy_task",
                       (UBaseType_t    )EMCY_TASK_PRIO,
                       (uint16_t       )TASK_STACK_1024B,
                       (void*          )NULL); 

    kernel_task_cancel(task_list[TASK_ID_START]); //删除开始任务
    taskEXIT_CRITICAL();            //退出临界区
}

